#pragma once
#include <string>
#include <memory>

namespace Cogs {
	class Texture2D {
	public:
		virtual uint32_t GetHeight() const = 0;
		virtual uint32_t GetWidth() const = 0;
		virtual uint32_t GetRendererID() const = 0;

		virtual void SetData(void* data, uint32_t size) = 0;
		virtual void Bind(uint32_t solt = 0) const = 0;

		virtual bool IsLoaded() const = 0;
		virtual bool operator == (const Texture2D& other)const = 0;

		static std::shared_ptr<Texture2D> Load(const std::string& path);
		static std::shared_ptr<Texture2D> Create(uint32_t width, uint32_t height);
	};
}